七天帶你初探AR世界-Day 3


Day 3

在昨天已經在 art.scnassets 檔中加入好3D模組了,那麼今天來教大家如何實現在AR世界裡吧!
首先,我們宣告一個 function 來導入檔案中的模組,並設置模組在AR空間中的位置,那接下來會在下面作說明:

1 func addCat(x: Float = 0, y: Float = -0.3, z: Float = -0.5) {
2    guard let catScene = SCNScene(named: "art.scnassets/models/wolf.obj") else { return }
3    object = SCNNode()
4    let catSceneChildNodes = catScene.rootNode.childNodes
5    for childNode in catSceneChildNodes {
6        object.addChildNode(childNode)
7    }
8    object.position = SCNVector3(x, y, z)
9    object.scale = SCNVector3(0.0005, 0.0005, 0.0005)
10    sceneView.scene.rootNode.addChildNode(object)
  }
  • 宣告func,並給予位置座標,以下是AR空間改念圖。
  • 宣告 catScene 初始化 SCNScene() 導入模組,如果沒有此檔案便會 return
  • 初始化一個 SCNNode 物件,叫 object
  • 宣告 catSceneChildNodescatScene 的子節點。
  • for...in 跑完 catSceneChildNodes 的節點並加入 object 物件上。
  • object.position 以宣告func時的x,y,x為位置。
  • object.scale 調整模組比例大小。
  • 顯示在 sceneView 上。

當然你必須做一個動作觸發此 func ,還記得在第一天拉的 Button 嗎?就是為了現在準的!

@IBAction func addCatAction(_ sender: Any) {
    addCat()
}

各位亦可放在:

 override func viewDidLoad() {
     addCat()
     ...
 }

此方法會在你已開啟APP就會顯示3D模組囉!

#ARKit #3Dmodel #Day3







你可能感興趣的文章

Single Page Application 的應用

Single Page Application 的應用

1045. Customers Who Bought All Products

1045. Customers Who Bought All Products

DOM TokenList.contains(token) vs. Element.matches(CSS seletorString)

DOM TokenList.contains(token) vs. Element.matches(CSS seletorString)






留言討論